﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model.Orden;
using Processes.Orden;
using System.Web.Security;

namespace Interfaces.Orden
{
    public partial class Buscar : System.Web.UI.Page
    {
        List<Order> ordenes = new List<Order>();
        GestorOrden gestorOrden = new GestorOrden();
        string res;
        public DateTime time;/* { get { return (DateTime)ViewState["time"]; } set { ViewState["time"] = value; } }*/
        DateTime time2; /*{ get { return (DateTime)ViewState["time2"]; } set { ViewState["time2"] = value; } }*/
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.Identity.IsAuthenticated)
                FormsAuthentication.RedirectToLoginPage();
            time = new DateTime();
            time2 = new DateTime();
            if (Session["BuscarMaster"] != null)
            {
                res = (string)Session["BuscarMaster"];
            }

        }
        protected void Page_PreInit(object sender, EventArgs e)
        {
            if (Session["BuscarMaster"] != null)
            {
                res = (string)Session["BuscarMaster"];
                this.MasterPageFile = res;
            }
        }

        public void bind()
        {
            time = DateTime.Parse(deFecha.Text + " 0:0:0");
            time2 = DateTime.Parse(aFecha.Text + " 0:0:0");
            bool secre = true;
            if (res!=null && !res.Equals("~/MasterPages/SecretaryMaster.Master"))
                secre = false;
            DataList1.DataSource = gestorOrden.buscarOrdenFecha(time, time2,secre);
            DataList1.DataBind();
        }
        public void bind2()
        {
            string nro = NroText.Text;
            string anio = AnioText.Text;
            bool secre = true;
            if (res != null && !res.Equals("~/MasterPages/SecretaryMaster.Master"))
                secre = false;
            DataList1.DataSource = gestorOrden.buscarOrdenNro(nro, anio,secre);
            if (DataList1.DataSource != null)
                DataList1.DataBind();
            else
                LabelError.Text = "No se encontraron resultados";

        }
        protected void BuscarButton_Click(object sender, EventArgs e)
        {

            if (aFecha.Text != "" && deFecha.Text != "")
            {
                if (DateTime.Parse(aFecha.Text + " 0:0:0").Year < 1967 || DateTime.Parse(deFecha.Text + " 0:0:0").Year < 1967)
                {
                    LabelError.Text = "La fecha tiene que ser mayor que 1967";
                }
                else
                {
                    if (DateTime.Parse(aFecha.Text + " 0:0:0") < DateTime.Parse(deFecha.Text + " 0:0:0"))
                    {
                        LabelError.Text = "La fecha inicio es mayor que la fecha final";
                    }
                    else
                    { 
                    bind();
                    }
                    
                    
                }

            }
            else
            {
                LabelError.Text = "Debe llenar las dos fechas";
            }
        }

        protected void BuscarAño_Click(object sender, EventArgs e)
        {
            LabelError.Text = "";
            
                if (AnioText.Text != "" && NroText.Text != "")
                {
                    try
                    {
                        int res = 0;
                        if (int.Parse(AnioText.Text) < 1967 )
                        {
                            LabelError.Text = "La fecha tiene que ser mayor que 1967";
                        }
                        else
                        {
                            if (!int.TryParse(NroText.Text, out res))
                            {
                                LabelError.Text = "Numero incorrecto";
                            }
                            else
                                bind2();
                        }
                    }
                    catch (Exception ex)
                    {
                        LabelError.Text = "La fecha y/o número son valores incorrectos";
                    }
                   
                }
                    
                else
                    LabelError.Text = "Año o número incompletos";

        }

        protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "Ver")
            {
                Label Ver = (Label)e.Item.FindControl("Nro");
                Label Fecha = (Label)e.Item.FindControl("Fecha");
                Label FechaModificacion = (Label)e.Item.FindControl("FechaUltimaModificacion");
                Response.Redirect("Ver.aspx?Nro=" + Ver.Text + "&Fecha=" + Fecha.Text + " &FechaUltimaModificacion=" + FechaModificacion.Text);

            }
            if (e.CommandName == "Modificar")
            {
                Label aprob = (Label)e.Item.FindControl("Aprobada");
                if (aprob.Text.Equals("True"))
                {
                    LabelError.Text = "No se puede modificar una orden que ya fue aprobada";
                }
                else
                {
                    Session["CrearModificar"] = "Modificar";
                    Label Ver = (Label)e.Item.FindControl("Nro");
                    Label date = (Label)e.Item.FindControl("Fecha");
                    Response.Redirect("ModificarOrden.aspx?Nro="+Ver.Text+"&Date="+date.Text);
                    
                }
            }
        }

        protected void DataList1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void RadioButtonFecha_CheckedChanged(object sender, EventArgs e)
        {
            Panel2.Visible = RadioButtonFecha.Checked;
            Panel3.Visible = RadioButtonNro.Checked;
        }

        protected void RadioButtonNro_CheckedChanged(object sender, EventArgs e)
        {
            Panel2.Visible = RadioButtonFecha.Checked;
            Panel3.Visible = RadioButtonNro.Checked;
        }


    }
}
